<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

      class WedstrijdModel extends CI_Model {
        private $wedstrijdquery = <<<EOT
  select pt.naam 'thuisnaam',
pb.naam 'bezoekernaam',
pst.ploegseizoenid 'thuisinschrijving',
psb.ploegseizoenid 'bezoekerinschrijving',
pt.ploegid 'thuisid',
pb.ploegid 'bezoekerid',
s.speeldagdatum 'datum',
s.speeldagnaam 'wedstrijdnaam',
s.speeldagid 'speeldag',
w.uur,
w.wedstrijdid,
w.gespeeld,
w.type,
s.speeldagseizoen 'seizoen',
(select count(*) from wedstrijdgebeurtenis where wedstrijd = w.wedstrijdid and type = 'GH' and deleted <> 1) 'thuisscore',
(select count(*) from wedstrijdgebeurtenis where wedstrijd = w.wedstrijdid and type = 'GA' and deleted <> 1) 'bezoekerscore',
(select count(*) from wedstrijdgebeurtenis where wedstrijd = w.wedstrijdid and type = 'YH' and deleted <> 1) 'thuisgeel',
(select count(*) from wedstrijdgebeurtenis where wedstrijd = w.wedstrijdid and type = 'YA' and deleted <> 1) 'bezoekergeel',
(select count(*) from wedstrijdgebeurtenis where wedstrijd = w.wedstrijdid and type = 'RH' and deleted <> 1) 'thuisrood',
(select count(*) from wedstrijdgebeurtenis where wedstrijd = w.wedstrijdid and type = 'RA' and deleted <> 1) 'bezoekerrood'
from wedstrijd w
inner join ploegseizoen pst on w.thuis = pst.ploegseizoenid
inner join ploeg pt on pt.ploegid = pst.ploeg
inner join ploegseizoen psb on w.bezoeker = psb.ploegseizoenid
inner join ploeg pb on pb.ploegid = psb.ploeg
inner join speeldag s on w.speeldag = s.speeldagid
EOT;
          function __construct(){
              parent::__construct();
              //$this->load->library('Seizoen');
          }

          private function getArrayFromRows($result){
              if($result->num_rows() > 0){
                  $return = array();
                  foreach($result->result() as $object){
                      $wedstrijd = new WedstrijdClass();
                      $wedstrijd->Id = $object->wedstrijdid;
                      $wedstrijd->ThuisId = $object->thuisid;
                      $wedstrijd->ThuisInschrijving = $object->thuisinschrijving;
                      $wedstrijd->ThuisNaam = $object->thuisnaam;
                      $wedstrijd->ThuisScore = $object->thuisscore;
                      $wedstrijd->ThuisGeel = $object->thuisgeel;
                      $wedstrijd->ThuisRood = $object->thuisrood;
                      $wedstrijd->BezoekerId = $object->thuisid;
                      $wedstrijd->BezoekerInschrijving = $object->bezoekerinschrijving;
                      $wedstrijd->BezoekerNaam = $object->bezoekernaam;
                      $wedstrijd->BezoekerScore = $object->bezoekerscore;
                      $wedstrijd->BezoekerGeel = $object->bezoekergeel;
                      $wedstrijd->BezoekerRood = $object->bezoekerrood;
                      $wedstrijd->Uur = $object->uur;
                      $wedstrijd->Datum = $object->datum;
                      $wedstrijd->Naam = $object->wedstrijdnaam;
                      $wedstrijd->Seizoen = $object->seizoen;
                      $wedstrijd->Gebeurtenis = $this->SelectWedstrijdGebeurtenisAll($object->wedstrijdid);
                      $wedstrijd->Speler = $this->SelectWedstrijdSpeler($object->wedstrijdid);
                      $wedstrijd->Gespeeld = $object->gespeeld;
                      $wedstrijd->Type = $object->type;
                      
                      $return[] = $wedstrijd;
                  }

                  return $return;
              } else {
                  return null;
              }
          }


          
          function SelectWedstrijdAll(){
           //   $query = "select w.wedstrijdid as id, w.thuis as thuisid, pa.naam as thuisnaam, w.bezoeker as bezoekerid, pb.naam as bezoekernaam, w.thuisscore as thuisscore, w.bezoekerscore as bezoekerscore  from wedstrijd w inner join ploegseizoen psa on w.thuis = psa.ploegseizoenid inner join ploeg pa on psa.ploeg = pa.ploegid inner join ploegseizoen psb on w.bezoeker = psb.ploegseizoenid inner join ploeg pb on psb.ploeg = pb.ploegid";
              $query = $this->wedstrijdquery.' where w.seizoen = ?';
              return $this->getArrayFromRows($this->db->query($query,array($seizoen)));
          }
          
          function SelectWedstrijdBySpeeldag($speeldagid){
              //   $query = "select w.wedstrijdid as id, w.thuis as thuisid, pa.naam as thuisnaam, w.bezoeker as bezoekerid, pb.naam as bezoekernaam, w.thuisscore as thuisscore, w.bezoekerscore as bezoekerscore  from wedstrijd w inner join ploegseizoen psa on w.thuis = psa.ploegseizoenid inner join ploeg pa on psa.ploeg = pa.ploegid inner join ploegseizoen psb on w.bezoeker = psb.ploegseizoenid inner join ploeg pb on psb.ploeg = pb.ploegid where w.seizoen = ?";
              $query = $this->wedstrijdquery.' where s.speeldagid = ?';
              return $this->getArrayFromRows($this->db->query($query,array($speeldagid)));
          }

          function SelectWedstrijdById($id){
    //          $query = "select w.wedstrijdid as id, w.thuis as thuisid, pa.naam as thuisnaam, w.bezoeker as bezoekerid, pb.naam as bezoekernaam, w.thuisscore as thuisscore, w.bezoekerscore as bezoekerscore  from wedstrijd w inner join ploegseizoen psa on w.thuis = psa.ploegseizoenid inner join ploeg pa on psa.ploeg = pa.ploegid inner join ploegseizoen psb on w.bezoeker = psb.ploegseizoenid inner join ploeg pb on psb.ploeg = pb.ploegid where w.wedstrijdid = ?";
              $query = $this->wedstrijdquery.' where w.wedstrijdid = ?';
              return $this->getArrayFromRows($this->db->query($query,array($id)));
          }
          
          function SelectSpelerNotInWedstrijd($wedstrijd,$seizoen){
              $query = "select * from speler s inner join spelerploegseizoen sps on sps.speler = s.spelerid inner join ploegseizoen ps on ps.ploegseizoenid = sps.ploegseizoen where ps.seizoen = ? and sps.deleted <> 1 and s.deleted <> 1 and sps.spelerploegseizoenid not in (select speler from wedstrijdspeler where wedstrijd = ?)";
              $result =$this->db->query($query,array($seizoen,$wedstrijd));       
              $return = array();
              foreach($result->result() as $object){
                      $speler = new SpelerClass();
                      $speler->Naam = $object->naam;
                      $speler->Voornaam = $object->voornaam;
                      $speler->Nummer = $object->nummer;
                      $speler->Inschrijving = $object->spelerploegseizoenid;
                      $speler->Id = $object->spelerid;
                      $speler->Positie = $object->positie;
                      $return[] = $speler;
                  }
                  
                  return $return;
          }
          
          function SelectSpeeldagBySeizoen($seizoenid){
              $query = "select * from speeldag where speeldagseizoen = ?";
              $result = $this->db->query($query,array($seizoenid));
              $return = array();
              if($result->num_rows() > 0){
                  foreach($result->result() as $object){
                      $instance = new SpeeldagClass();
                      $instance->Id = $object->speeldagid;
                      $instance->Naam = $object->speeldagnaam;
                      $instance->Datum = $object->speeldagdatum;
                      $instance->Seizoen = $object->speeldagseizoen;
                    
                      
                      $return[] = $instance;
                  }
                  
                  return $return;
              }
              
          }
          
          function InsertSpeeldag($naam,$datum,$seizoen){
              $query = "insert into speeldag (speeldagnaam,speeldagdatum,speeldagseizoen) values (?,?,?)";
              $result = $this->db->query($query,array($naam,$datum,$seizoen));
              return $this->db->insert_id();
          }
          
          function InsertWedstrijd($thuis,$bezoeker,$speeldag,$uur){
              $query = "insert into wedstrijd (thuis,bezoeker,speeldag,uur) values (?,?,?,?)";
              $this->db->query($query,array($thuis,$bezoeker,$speeldag,$uur));
              return $this->db->insert_id();
          }
          
          function DeleteWedstrijd($id){
              $query = "update wedstrijd set deleted = 1 where wedstrijdid = ?";
              return $this->db->query($query,array($id));
          }
          
          function InsertWedstrijdGebeurtenis($id,$type,$speler){
              $query = "insert into wedstrijdgebeurtenis (wedstrijd,type,speler) values (?,?,?)";
              $this->db->query($query,array($id,$type,$speler));
              return $this->db->insert_id();
          }
          
          function DeleteWedstrijdGebeurtenis($id){
              $query = "update wedstrijdgebeurtenis set deleted = 1 where wedstrijdgebeurtenisid = ?";
              return $this->db->query($query,array($id));
          }
          
          function InsertWedstrijdSpeler($id,$speler){
              $query = "insert into wedstrijdspeler (wedstrijd,speler) values (?,?)";
              $this->db->query($query,array($id,$speler));
              return $this->db->insert_id();
          }
          
          
          
          function DeleteWedstrijdSpeler($id){
              
              $query = "update wedstrijdspeler set deleted = 1 where wedstrijdspelerid = ?";
              return $this->db->query($query,array($id));
              
          }
          
          function SelectWedstrijdSpeler($id){
              $query = "select * from wedstrijdspeler w inner join spelerploegseizoen sps on w.speler = sps.spelerploegseizoenid inner join speler s on sps.speler = s.spelerid where w.deleted <> 1 and w.wedstrijd = ?";
              $result = $this->db->query($query,array($id));
              $return = array();
              if($result->num_rows() > 0){
                  foreach($result->result() as $object){
                      $speler = new SpelerClass();
                      $speler->Naam = $object->naam;
                      $speler->Voornaam = $object->voornaam;
                      $speler->Nummer = $object->nummer;
                      $speler->Inschrijving = $object->spelerploegseizoenid;
                      $speler->Id = $object->spelerid;
                      $speler->Positie = $object->positie;
                      $return[] = $speler;
                  }
                  
                  return $return;
              }
          }
              

              
                function SelectWedstrijdGebeurtenisAll($wedstrijdid){
                    $query = "select * from wedstrijdgebeurtenis w left join spelerploegseizoen sps on w.aanvaller = sps.spelerploegseizoenid inner join speler s on sps.speler = s.spelerid where w.wedstrijd = ? and w.deleted <> 1";
                    $result = $this->db->query($query,array($wedstrijdid));
                    $return = array();
                    if($result->num_rows() > 0){
                        foreach($result->result() as $object){
                            $gebeurtenis = new WedstrijdGebeurtenisClass();
                            $gebeurtenis->Type = $object->type;
                            $gebeurtenis->Minuut = $object->minuut;
                            $gebeurtenis->SpelerId = $object->spelerid;
                            $gebeurtenis->SpelerInschrijving = $object->spelerinschrijving;
                            $gebeurtenis->SpelerNaam = $object->voornaam." ".$object>naam;
                            $gebeurtenis->SpelerNummer = $object->spelernummer;
                            $gebeurtenis->SpelerWedstrijd = $object->spelerwedstrijdid;
                            $return[] = $gebeurtenis;
                        }

                        return $return;
                    }
                }

              
              
              
              
              
              
          }
          
      
